汇编学习笔记 | 您所在的位置:网站首页 › 汇编指令clp ac › 汇编学习笔记 |
目录 汇编指令 nop指令 mov、add、sub指令 adc、sbb指令 and、or指令 移位指令 逻辑左/右移指令 循环左/右移指令 算术左/右移指令 带进位循环左/右移指令 inc指令 push、pop指令 pushf、popf指令 栈存储 栈原理 loop指令 word/byte ptr指令 div指令 mul指令 jmp指令 段内短转移 段内近转移 段间转移(远转移) 未定距离转移 条件转移指令 以CX寄存器为条件(jcxz) 以PSW寄存器为条件 cmp指令 cld、std、movsb、movsw指令 rep指令 call与ret指令 int与iret指令 in与out指令 指令操作规范 指令汇总 操作符汇总 书写规范 指向内容 任意常量 汇编指令 定义:有对应的机器码的指令,可以被编译为机器指令,最终被CPU执行。 nop指令 定义:用于占位的空指令,无任何效果,在指令书写处占用一个字节的内存空间 示例:nop指令在内存中的状态 PS:如上图所示,nop指令的机器码为90h,占用一个字节 mov、add、sub指令 定义:mov A,B 将B中的数据移入A;add A,B 将A与B相加的结果存入A;sub A,B 将A与B相减的结果存入A 示例1:mov与add指令对应到高级编程语言中 PS:汇编指令不区分大小写,即MOV等效与mov 示例2:使用高低8位寄存器的情况下的指令执行结果 PS:最后一条指令中,C5H与93H相加的结果为158,但因为al寄存器只能存储8位数据,因此最高位1因为数据溢出而被舍弃(因使用的是al寄存器进行独立运算,故该进位不会进入ah寄存器中) 示例3:mov指令操作段寄存器 PS1:如上图,mov指令不能修改段寄存器的内容为固定值(mov ds 2000或mov cs,0001),但可通过使用通用寄存器进行中转来实现这一过程(mov ax,2000 mov ds,ax) PS2:mov、add指令操作固定地址的值时需要使用对内存寻址(mov 2000:1000,ffff或mov 2000:1000,ax或mov ax,2000:1000都是不成立的),具体方式见汇编学习笔记——寻址与存储对内存寻址部分 示例4:mov/add指令操作指令指针寄存器及add操作段寄存器 PS:如上图,mov与add指令都无法以任何形式操作指令指针寄存器ip,且add指令无法以任何形式操作段寄存器的值(sub指令的特性与add指令的特性相同) adc、sbb指令 定义:adc A,B 将A与B相加的结果加上PSW寄存器中的CF位后存入A;sub A,B 将A与B相减的结果减去上PSW寄存器中的CF位后存入A(关于PSW寄存器及CF位相关,见汇编学习笔记——寄存器的标志寄存器PSW部分) 示例1:编程计算1EF0001000H+2010001EF0H,将结果存放于ax(高16位),bx(次高16位),cx(低16位)中 PS:如上图所示,先将最低16位相加,若有进位,则会将CF位置为1,再用adc将次高16位相加时便会加上该进位,最后使用adc将最高16位相加同理。adc指令因其将CF位加入计算的设计,可用于超大数据的相加运算。 示例2:编程计算003E1000H-00202000H,将结果存放于ax(高16位),bx(低16位)中 PS:如上图所示,先将低16位相减,若有借位,则会将CF位置为1,再用sbb将高16位相减时便会减去该借位。sbb指令因其将CF位加入计算的设计,可用于超大数据的相减运算。 示例3:使用adc指令进行超大数据相加 |
今日新闻 |
推荐新闻 |
专题文章 |
CopyRight 2018-2019 实验室设备网 版权所有 |